#include<stdio.h>
#include<unistd.h>
int gval = 100;
int main()
{
    pid_t id = fork();
    if(id)
    {
        while(1)
        {
            printf("父进程，pid:%d,ppid:%d,gval:%d,&gval:%p\n",getpid(),getppid(),gval,&gval);
            sleep(1);
        }
    }
    else 
    {
        while(1)
        {
            printf("子进程，pid:%d,ppid:%d,gval:%d,&gval:%p\n",getpid(),getppid(),gval,&gval);
            sleep(1);
            ++gval;
        }
    }
    return 0;
}
//#include <stdio.h>
//#include <unistd.h>
//#include <stdlib.h>
//int g_unval;
//int g_val = 100;
//int main(int argc, char *argv[], char *env[])
//{
// const char *str = "helloworld";
// printf("code addr: %p\n", main);
// printf("init global addr: %p\n", &g_val);
// printf("uninit global addr: %p\n", &g_unval);
// static int test = 10;
// char *heap_mem = (char*)malloc(10);
// char *heap_mem1 = (char*)malloc(10);
// char *heap_mem2 = (char*)malloc(10);
// char *heap_mem3 = (char*)malloc(10);
// printf("heap addr: %p\n", heap_mem); //heap_mem(0), &heap_mem(1)
// printf("heap addr: %p\n", heap_mem1); //heap_mem(0), &heap_mem(1)
// printf("heap addr: %p\n", heap_mem2); //heap_mem(0), &heap_mem(1)
// printf("heap addr: %p\n", heap_mem3); //heap_mem(0), &heap_mem(1)
// printf("test static addr: %p\n", &test); //heap_mem(0), &heap_mem(1)
// printf("stack addr: %p\n", &heap_mem); //heap_mem(0), &heap_mem(1)
// printf("stack addr: %p\n", &heap_mem1); //heap_mem(0), &heap_mem(1)
// printf("stack addr: %p\n", &heap_mem2); //heap_mem(0), &heap_mem(1)
// printf("stack addr: %p\n", &heap_mem3); //heap_mem(0), &heap_mem(1)
// printf("read only string addr: %p\n", str);
// for(int i = 0 ;i < argc; i++)
// {
// printf("argv[%d]: %p\n", i, argv[i]);
// }
// for(int i = 0; env[i]; i++)
// {
// printf("env[%d]: %p\n", i, env[i]);
// }
// return 0;
//}

//#include<stdio.h>
//#include<string.h>
//#include<stdlib.h>
//extern char** environ;
//int main(int argc,char* argv[],char* env[])
//{
//    (void)argc;
//    (void)argv;
//    (void)env;
//
//    for(int i = 0; environ[i];i++)
//    {
//        printf("environ[%d]->%s\n",i,environ[i]);
//    }
//}
//int main()
//{
//    const char* user = getenv("USER");
//    if(user == NULL) return 1;
//    if(strcmp(user,"Yuey") == 0)
//        printf("这是想要的逻辑\n");
//    else 
//        printf("Only Yuey can operator\n");
//    return 0;
//}
//int main()
//{
//    const char* path = getenv("PATH");
//    if(path == NULL) return 1;
//    printf("PATH->%s\n",path);
//    return 0; 
//}
//int main(int argc,char* argv[],char* env[])
//{
//    (void)argc;
//    (void)argv;
//     for(int i = 0;env[i];i++)
//     {
//         printf("env[%d]->%s\n",i,env[i]);
//     }
//    return 0;
//}
//int main(int argc,char* argv[])
//{
//    if(argc != 2)
//    {
//        printf("Usage: ./code [-a -b -c]\n");
//        return 1;
//    }
//    
//    const char* str = argv[1];
//    if(strcmp("-a",str) == 0)
//        printf("./code -a:功能1\n");
//    else if(strcmp("-b",str) == 0)
//        printf("./code -b:功能2\n");
//    else if(strcmp("-c",str) == 0)
//        printf("./code -c:功能3\n");
//    else 
//        printf("Usage: ./code [-a -b -c]\n");
//        
//   // for(int i = 0; i < argc; ++i)
//   // {
//   //     printf("argv[%d]:%s\n",i,argv[i]);
//   // }
//    return 0;
//}
